home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / rose_nos / rosenet.doc < prev    next >
Text File  |  1992-02-26  |  11KB  |  247 lines

  1. 2/26/92
  2.  
  3. Preliminary notes -- Using TCP/IP with a ROSE circuit
  4.  
  5. (These are notes that accompany a pre-release NET version for those of 
  6. you who feel adventuresome.  It is K5JB version k05, or later.)
  7.  
  8. This version of NET has a work-around that permits NET to send IP frames 
  9. over ROSE circuits.  Normally, the ROSE system replaces the protocol 
  10. identifier (PID) in AX.25 information frames with its own when handling 
  11. packets between switches and does not preserve the PID from the original 
  12. user's packet's header.  In its native datagram mode NET communicates 
  13. with other NET or NOS stations using un-numbered information frames (UI) 
  14. but can be made to run in a virtual circuit mode (VC, or connected) if 
  15. necessary.  Although we can initiate VC for our transport mechanism, we 
  16. can't recognize the IP PID if it isn't there!  There are rumors that the 
  17. next version of ROSE is supposed to cure this problem, but in the mean 
  18. time I needed to use ROSE, (after all IP is an INTERNET PROTOCOL, eh? 
  19. Ah, well, bad joke!).  Besides, I can control how NET works because I 
  20. have control of the keyboard!
  21.  
  22. Two things have to be done to use ROSE circuits: 1. Trap incoming IP 
  23. frames and modify them, 2. Use virtual circuit (VC or Connected) mode on 
  24. outgoing IP frames.
  25.  
  26. The scheme I used a kludge, but it seems to work OK.  First I use 
  27. a trap that would catch suspected incoming rose information frames and 
  28. put the IP protocol identifier (PID) back.  This trap works good, and 
  29. when modified for NOS's structures, also works in NOS.  To use ROSE for 
  30. outgoing IP frames, you have to go VC mode.  Although you can use the 
  31. mode command to make an interface use VC for all outgoing traffic, if 
  32. you do you will forgo the datagram mode which has better performance 
  33. than VC.  (I didn't mean to say that; it slipped out!  Actually the 
  34. protocol performance differences are insignificant when your baselines 
  35. are really pitiful RF paths.)
  36.  
  37. For outgoing frames, to prevent having to dedicate the async port to the 
  38. VC mode, I added a command so you can attach a pseudo interface which 
  39. has most of the attributes of an already attached asynchronous inter-
  40. face.  You then use that pseudo interface to specify that you want to 
  41. use virtual circuit.  This way, not all transactions that start from 
  42. that async port need to be VC.
  43.  
  44. (I am not through evaluating the scheme and looking for side effects.  
  45. If you experience problems caused by the pseudo interface, simply set 
  46. your async port mode to VC.  I have not yet found any fatal problems 
  47. with the pseudo interface.)
  48.  
  49. NOS has a different way of handling routes for outgoing packets and you 
  50. can use specify the route mode to be vc for the outgoing AX.25 route you 
  51. will be using.  Though I put the ROSE trap in the version of NOS that I 
  52. had (PA0GRI v1.7j) I didn't run it.  It was tested by N5OWK to my satis-
  53. faction.  I normally don't use NOS so most of these instructions are for 
  54. NET.  I chose not to do routing the same way in NET as is done in NOS 
  55. because I am trying to keep NET small as practical.  Adding the trap, 
  56. etc. cost me 488 bytes -- Ouch!
  57.  
  58. First to address received packets...
  59.  
  60. You use the rose add command to create a table of distant IP stations 
  61. and associated ROSE switches that will be feeding packets to you.  This 
  62. table is used to catch incoming information frames from those stations 
  63. and put the IP PID back so NET will handle them internally.  Syntax for 
  64. this command is:
  65.  
  66.         rose add <IP station's call> <ROSE switch's call>
  67.  
  68. The distant IP station's call is the AX.25 call, not his host name. Your
  69. neighbor ROSE switch's call is its AX.25 call.
  70.  
  71. For an example of calls used, I will describe a test circuit I used. 
  72. K5JB-10 is my IP station number 1 (host is k5jb), with N0ELS-5 as a 
  73. neighbor ROSE (address 405771).  It will be using async port kp0a which 
  74. is connected to a Kantronics KPC-4 using logical port a.  K5JB-11 is my 
  75. IP station number 2 (k5jbspook) on another frequency with K5JB-5 as a 
  76. neighbor ROSE (address 405732).  It will use a conventional port named 
  77. ax0.
  78.  
  79. An example of the rose add command on IP station Number 1 (k5jb) is:
  80.  
  81.         rose add k5jb-11 k5jb-5
  82.  
  83. Where the -11 call is my IP station's call and k5jb-5 is its neighbor 
  84. rose.
  85.  
  86. If you want to drop a call from the table, the command is:
  87.  
  88.         rose drop <IP station's call>
  89.  
  90. Because we normally will be able to only create a single return circuit, 
  91. you should only have one rose table entry for an IP station.  This is 
  92. not a serious limitation because you and the other IP station have to 
  93. coordinate both ends anyway and set your routes to match.
  94.  
  95. You can have a maximum of 10 IP station/ROSE call pairs in the rose
  96. table.
  97.  
  98. This takes care of incoming packets; now to route outgoing packets.
  99.  
  100. Before we describe how to make the port use virtual circuit, we will go 
  101. through the routing commands.  You use two standard NET commands, arp 
  102. add, and route add.  For our purpose, we use a simple form of the arp 
  103. add command with the syntax:
  104.  
  105.         arp add <hostname> ax25 <AX.25 call path>
  106.  
  107. Using the calls in the example above, the arp add command would be:
  108.  
  109.         arp add k5jbspook ax25 k5jb-11 n0els-5 405732
  110.  
  111. The call sign string is the same as one you would use to make an ax25 
  112. connection manually over that ROSE circuit (destination call, neighbor 
  113. ROSE call, destination ROSE address).
  114.  
  115. For our purpose we use a simple version of the route add command with 
  116. the syntax:
  117.  
  118.         route add <hostname> <iface name>
  119.  
  120. And using the example calls, would be:
  121.  
  122.         route add k5jbspook kp0a
  123.  
  124. assuming that we are using kp0a as our asynchronous port for this 
  125. circuit.  Thus it takes three command entries for each circuit: rose 
  126. add, arp add, and route add.  (The arp add and route add commands are 
  127. unchanged for ROSE.  You can add all the sophistication you want to 
  128. them.  See the NET manual.)
  129.  
  130. Finally, if you don't use the rose attach command (described next) we 
  131. need to tell NET to use virtual circuit mode on your async port (ax0 in 
  132. this example) by using the mode command:
  133.  
  134.         mode kp0a v
  135.  
  136. To complete our example, we move to the second IP station (k5jbspook) 
  137. and use the following to reach k5jb on ROSE:
  138.  
  139.         rose add k5jb-10 k5jb-5
  140.         arp add k5jb ax25 k5jb-10 k5jb-5 405771
  141.         route add k5jb ax0
  142.         mode ax0 v
  143.  
  144. Incidentally, if you are using Desqview (you should!) you can use the 
  145. transfer command to move complicated lines from your autoexec.net file 
  146. to a running net and avoid typing mistakes.  This method also organizes 
  147. your routing so you don't forget what you were doing.
  148.  
  149. If you don't want to dedicate your async interface to VC (which I 
  150. didn't) you may want to attach and try the pseudo rose interface, here 
  151. is how to do it.
  152.  
  153. The command for attaching this pseudo interface is:
  154.  
  155.         rose attach <rose iface name> <async iface name>
  156.  
  157. If you only have one async interface attached, called ax0, I suggest you 
  158. simply use the command:
  159.  
  160.         rose attach rose ax0
  161.  
  162. If you are using more than one interface, you might use "ro0", "ro1", 
  163. etc.  If you are using the Kantronics KPC-4 or KAM interface, there is a 
  164. strict naming convention you must follow.  If the interface to be used 
  165. is kp0a, use the name rosa, ro0a, or whatever, four characters long, 
  166. ending with the same letter as the end of the kpc port name.  In my IP 
  167. station example above, I would use, rose attach rosa kp0a, (Second port 
  168. would have been, rose attach rosb kp0b.)  This is necessary because of 
  169. the way the KPC-4 code handles two ports and puts "a" or "b" in that 
  170. last character's position depending on which logical port received 
  171. traffic.  For various reasons, don't use a name of more than four char-
  172. acters long.
  173.  
  174. (DRSI PC*PA driver I implemented in NET uses the same naming convention 
  175. but this ROSE interface has not been checked against the DRSI driver yet 
  176. to see if it works.  Since we used the DRSI driver as a pattern to 
  177. handle the dual port KPC-4, it will likely work.)
  178.  
  179. You can add a maximum of 4 pseudo interfaces to 4 corresponding async 
  180. interfaces.  This maximum and the maximum number of IP station/ROSE 
  181. neighbor pairs can be changed by defines in rose.c.  If you use the 
  182. pseudo rose interface you don't have to use the mode command.
  183.  
  184. A benign disadvantage of doing it the way I did is that if you want to
  185. trace incoming data on a port, you need to trace it by its natural 
  186. interface name and also by its pseudo rose name because incoming packets 
  187. will appear to come in on either of the interfaces depending on which 
  188. interface name is serviced first by the interface commutator loop after 
  189. a packet is received on that port.  The pseudo port preceeds the real 
  190. port in the interface chain but the real port will handle some of the 
  191. incoming packets if they are received while the pseudo port is working 
  192. on its data.
  193.  
  194. NET feeds outgoing packets to the ROSE network by looking up the host in 
  195. the arp table, getting the route from the route table, and since the 
  196. pseudo rose interface was installed as a VC, initiating an AX.25 connect 
  197. to the ROSE switch.  After some spurious packets from the ROSE switch 
  198. are read and discarded, you are in business!  (These packets are dis-
  199. carded by the IP handler because they fail the checksum test and the 
  200. failures are duly recorded in the statistics displayed by the ip stat 
  201. command.)
  202.  
  203. If you are using NOS, there is no need for this pseudo interface.  The 
  204. standard outgoing packet routing commands you use are, ax25 route add, 
  205. and ax25 route mode.  Using the same calls as used above, an example 
  206. command on k5jb-10 to reach k5jb-11 with ROSE would be:
  207.  
  208.    ax25 route add k5jb-11 n0els-5 405732
  209.    ax25 route mode k5jb-11 vc
  210.  
  211. These notes may not be clear enough to this point because the first two 
  212. stations that tried this scheme failed because they didn't coordinate 
  213. what they were doing with the target stations on the other ends of a ROSE 
  214. circuit.  Both ends have to set up tables and routes to match each 
  215. other.  Perhaps someday we will be able to drag a computer out of a box, 
  216. connect it to a radio, pop up on a network, and have it work without 
  217. following any rules -- but not yet!  Coordinate what you want to do with 
  218. your buddy and then have at it!
  219.  
  220. In summary:
  221.  
  222.  1. Decide what you want to do
  223.  2. Get someone else to agree (use the AX.25 mailbox to pass messages)
  224.  3. Use the rose add command
  225.  4. Use the arp add command
  226.  5. Use the route add command
  227.  6. Either use the mode command or the rose attach command, or if 
  228.     using NOS, use the ax25 route add and ax25 route mode commands.
  229.  7. Get the other person to set his/her station to correspond.
  230.  8. Ping the other station.  Watch for the return.
  231.  9. Do it again, it won't take so long for a return this time.
  232.  
  233. Now you won't have to use that AX.25 mailbox anymore to send messages to 
  234. your buddy.
  235.  
  236. Sorry about the kludge, but I had to do something!  If all the ROSE 
  237. switches suddenly start passing the PID byte, we can forget about this.  
  238. On the other hand, how does TEXNET handle IP frames?
  239.  
  240. BTW, Look at the users list on your neighbor switch after you establish 
  241. a session.  Holy Cow!  It says it doesn't know what the 0xcc PID is, 
  242. heh!  I bet it really does!
  243.  
  244. Enjoy!
  245.  
  246. Joe, K5JB
  247.